Skip to content

feat(merge): make merge asynchronous via runway#247

Draft
behinddwalls wants to merge 1 commit into
preetam/mergeconflict-asyncfrom
preetam/merge-async
Draft

feat(merge): make merge asynchronous via runway#247
behinddwalls wants to merge 1 commit into
preetam/mergeconflict-asyncfrom
preetam/merge-async

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Rework the merge stage from a synchronous in-process pusher call into a
runway round-trip, mirroring the merge-conflict check. The merge
controller now builds a full runway MergeRequest from the batch's member
requests (one MergeStep per request, in Contains order) and publishes it
to the runway-owned merger queue, keyed by the batch id as the
correlation id. A new mergesignal controller consumes the MergeResult off
merger-signal, transitions the batch to Succeeded/Failed, and fans out to
conclude and speculate; a mergesignal DLQ reconciler fails the batch on
an unprocessable result.

The in-process pusher extension is retired from the orchestrator wiring
(left in-tree but unused, like mergechecker); removal is a follow-up.
workflow.md and extension-contract.md updated to reflect both the check
and the merge crossing into runway over the shared MergeRequest/
MergeResult contract.

Co-authored-by: Cursor cursoragent@cursor.com

Test Plan

Issues

Stack

  1. feat(mergeconflict): make merge-conflict check asynchronous via runway #245
  2. @ feat(merge): make merge asynchronous via runway #247

@behinddwalls behinddwalls force-pushed the preetam/merge-async branch from 92d1ef3 to f89fcb9 Compare June 16, 2026 20:12
@behinddwalls behinddwalls force-pushed the preetam/mergeconflict-async branch 2 times, most recently from 2ee27cf to a970815 Compare June 17, 2026 06:00
@behinddwalls behinddwalls force-pushed the preetam/merge-async branch from f89fcb9 to 2b21765 Compare June 17, 2026 06:00
@behinddwalls behinddwalls force-pushed the preetam/mergeconflict-async branch from a970815 to bc59a27 Compare June 17, 2026 06:09
@behinddwalls behinddwalls force-pushed the preetam/merge-async branch from 2b21765 to cd3ef63 Compare June 17, 2026 06:09
@behinddwalls behinddwalls force-pushed the preetam/mergeconflict-async branch from bc59a27 to d9dc61f Compare June 17, 2026 06:20
@behinddwalls behinddwalls force-pushed the preetam/merge-async branch from cd3ef63 to 2d17620 Compare June 17, 2026 06:20
@behinddwalls behinddwalls force-pushed the preetam/mergeconflict-async branch from d9dc61f to 7ab64d3 Compare June 17, 2026 17:33
@behinddwalls behinddwalls force-pushed the preetam/merge-async branch from 2d17620 to 4a525e5 Compare June 17, 2026 17:33
@behinddwalls behinddwalls force-pushed the preetam/mergeconflict-async branch from 7ab64d3 to b6042a6 Compare June 17, 2026 18:00
@behinddwalls behinddwalls force-pushed the preetam/merge-async branch from 4a525e5 to 288e995 Compare June 17, 2026 18:00
Rework the merge stage from a synchronous in-process pusher call into a
runway round-trip, mirroring the merge-conflict check. The merge
controller now builds a full runway MergeRequest from the batch's member
requests (one MergeStep per request, in Contains order) and publishes it
to the runway-owned merger queue, keyed by the batch id as the
correlation id. A new mergesignal controller consumes the MergeResult off
merger-signal, transitions the batch to Succeeded/Failed, and fans out to
conclude and speculate; a mergesignal DLQ reconciler fails the batch on
an unprocessable result.

The in-process pusher extension is retired from the orchestrator wiring
(left in-tree but unused, like mergechecker); removal is a follow-up.
workflow.md and extension-contract.md updated to reflect both the check
and the merge crossing into runway over the shared MergeRequest/
MergeResult contract.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant